// 中国/香港手机号码生成工具

export type PhoneRegion = 'CN' | 'HK'

// 常见中国大陆手机号段（非完整，仅常用段，足够用于占号数据生成）
const CN_PREFIXES: string[] = [
  // 130-139
  '130',
  '131',
  '132',
  '133',
  '134',
  '135',
  '136',
  '137',
  '138',
  '139',
  // 150-159
  '150',
  '151',
  '152',
  '153',
  '155',
  '156',
  '157',
  '158',
  '159',
  // 166
  '166',
  // 171/173/175-178
  '171',
  '173',
  '175',
  '176',
  '177',
  '178',
  // 180-189
  '180',
  '181',
  '182',
  '183',
  '184',
  '185',
  '186',
  '187',
  '188',
  '189',
  // 19x（部分号段）
  '191',
  '193',
  '195',
  '198',
  '199',
]

// 香港常见起始位（移动电话通常为 5/6/9 开头，也存在其他段，这里取常见）
const HK_FIRST_DIGITS: number[] = [5, 6, 9]

function randomInt(max: number): number {
  return Math.floor(Math.random() * max)
}
function pick<T>(arr: T[]): T {
  return arr[Math.floor(Math.random() * arr.length)]
}

/** 生成香港 8 位手机号码（常见 5/6/9 开头） */
export function generateHKPhoneNumber(): string {
  const first = pick(HK_FIRST_DIGITS)
  const rest = String(randomInt(10_000_000)).padStart(7, '0')
  return `${first}${rest}`
}

/** 生成中国大陆 11 位手机号码（基于常见号段） */
export function generateChinaMobileNumber(): string {
  const prefix = pick(CN_PREFIXES)
  const tail = String(randomInt(10_000_000)).padStart(8, '0')
  return `${prefix}${tail}`
}

/** 按区域生成手机号码（默认 HK） */
export function generatePhone(options?: { region?: PhoneRegion }): string {
  const region = options?.region || 'HK'
  return region === 'CN' ? generateChinaMobileNumber() : generateHKPhoneNumber()
}
